/*
 *Copyright 2021-2023 NERCIS
 *
 *Licensed under the Apache License, Version 2.0 (the "License");
 *you may not use this file except in compliance with the License.
 *You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 *Unless required by applicable law or agreed to in writing, software
 *distributed under the License is distributed on an "AS IS" BASIS,
 *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *See the License for the specific language governing permissions and
 *limitations under the License.
 */

package cn.ac.nercis.pes.repository.model.evaluation;

import cn.ac.nercis.pes.common.constant.evaluation.RiskLevel;
import cn.ac.nercis.pes.repository.constant.BaseConstants;
import cn.ac.nercis.pes.repository.converter.evaluation.RiskLevelConverter;
import cn.ac.nercis.pes.repository.model.base.BaseEntity;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.GenericGenerator;


/**
 * 风险分析信息实体类
 * @author zpy
 * @version 1.0.0
 */
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "pes_risk_analysis")
public class RiskAnalysisDO extends BaseEntity {
    @Id
    @GenericGenerator(name = "generator",strategy = BaseConstants.CUSTOM_UUID_STRATEGY)
    @GeneratedValue(generator = "generator")
    @Column(name = "id",unique = true,nullable = false,length = 36)
    private String id;

    @Column(name = "system_id",nullable = false,length = 36)
    private String systemId;
    @Column(name = "layer_target_id",nullable = false,length = 36)
    private String layerTargetId;
    @Column(name = "unit_target_id",nullable = false,length = 36)
    private String unitTargetId;
    @Column(name = "asset_id",nullable = false,length = 36)
    private String assetId;

    @Column(name = "problem",length = 2000)
    private String problem;
    @Column(name = "suggest",length = 2000)
    private String suggest;
    @Column(name = "analysis",length = 2000)
    private String analysis;

    @Column(name = "threat_code",nullable = false,length = 128)
    private String threatCode;

    @Convert(converter = RiskLevelConverter.class)
    @Column(name = "risk_level",nullable = false)
    private RiskLevel riskLevel;

}
